// 单链表
#ifndef LINKED_LIST
#define LINKED_LIST

/// @brief 链表结点
typedef struct LNode
{
	int data;
	struct LNode *next;
} LNode, *LinkedList;

/// @brief 创建一个链表
/// @param array 用于初始化链表结点的数组
/// @param length 结点个数
/// @return 链表的头指针
LinkedList createList(int[], int);

/// @brief 链表中插入一个元素
/// @param list 链表
/// @param data 待插入的元素
/// @param index 插入位置（从0开始）
void listInsert(LinkedList, int, int);

/// @brief 删除链表中元素
/// @param list 链表
/// @param index 删除位置（从0开始）
void listDelete(LinkedList, int);

/// @brief 获取一个链表指定位置的结点
/// @param list 链表
/// @param index 下标（从0开始）
/// @return 结点的指针，未找到返回NULL
LNode *getListNode(LinkedList, int);

/// @brief 打印链表
/// @param list 链表
void printList(LinkedList);

#include "./linked-list.c"

#endif